package com.neuedu.hisboot.controller;

import com.neuedu.hisboot.dto.Result;
import com.neuedu.hisboot.entity.Checktemplate;
import com.neuedu.hisboot.service.IChecktemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  病历模板管理控制器
 * </p>
 *
 * @author jaun
 * @since 2025-07-04
 */
@RestController
@RequestMapping("/checktemplate")
public class ChecktemplateController {

    @Autowired
    private IChecktemplateService checktemplateService;

    /**
     * 获取所有模板
     */
    @GetMapping("/list")
    public Result<List<Checktemplate>> getTemplates() {
        List<Checktemplate> templates = checktemplateService.list();
        return Result.success(templates);
    }

    /**
     * 根据ID获取模板
     */
    @GetMapping("/{id}")
    public Result<Checktemplate> getTemplateById(@PathVariable("id") Integer id) {
        Checktemplate template = checktemplateService.getById(id);
        if (template == null) {
            return Result.error(500, "未找到对应的模板");
        }
        return Result.success(template);
    }

    /**
     * 创建新模板
     */
    @PostMapping("/create")
    public Result<Checktemplate> createTemplate(@RequestBody Checktemplate template) {
        try {
            if (template.getDelMark() == null) {
                template.setDelMark(1);
            }
            boolean success = checktemplateService.save(template);
            if (success) {
                return Result.success(template);
            } else {
                return Result.error(500, "创建模板失败");
            }
        } catch (Exception e) {
            return Result.error(500, "创建模板时发生错误: " + e.getMessage());
        }
    }

    /**
     * 更新模板
     */
    @PutMapping("/update")
    public Result<Checktemplate> updateTemplate(@RequestBody Checktemplate template) {
        try {
            boolean success = checktemplateService.updateById(template);
            if (success) {
                return Result.success(template);
            } else {
                return Result.error(500, "更新模板失败");
            }
        } catch (Exception e) {
            return Result.error(500, "更新模板时发生错误: " + e.getMessage());
        }
    }

    /**
     * 删除模板
     */
    @DeleteMapping("/{id}")
    public Result<String> deleteTemplate(@PathVariable("id") Integer id) {
        try {
            boolean success = checktemplateService.removeById(id);
            if (success) {
                return Result.success("删除成功");
            } else {
                return Result.error(500, "删除模板失败");
            }
        } catch (Exception e) {
            return Result.error(500, "删除模板时发生错误: " + e.getMessage());
        }
    }

    /**
     * 根据医生ID获取模板列表
     */
    @GetMapping("/doctor/{doctorId}")
    public Result<List<Checktemplate>> getTemplatesByDoctor(@PathVariable("doctorId") Integer doctorId) {
        List<Checktemplate> templates = checktemplateService.getByDoctorId(doctorId);
        return Result.success(templates);
    }

    /**
     * 根据使用范围获取模板列表
     */
    @GetMapping("/scope/{scope}")
    public Result<List<Checktemplate>> getTemplatesByScope(@PathVariable("scope") String scope) {
        List<Checktemplate> templates = checktemplateService.getByScope(scope);
        return Result.success(templates);
    }

    /**
     * 根据记录类型获取模板列表
     */
    @GetMapping("/type/{type}")
    public Result<List<Checktemplate>> getTemplatesByType(@PathVariable("type") Integer type) {
        List<Checktemplate> templates = checktemplateService.getByRecordType(type);
        return Result.success(templates);
    }

    /**
     * 导入模板
     */
    @PostMapping("/import")
    public Result<String> importTemplate(@RequestBody Checktemplate template) {
        try {
            boolean success = checktemplateService.save(template);
            if (success) {
                return Result.success("导入模板成功");
            } else {
                return Result.error(500, "导入模板失败");
            }
        } catch (Exception e) {
            return Result.error(500, "导入模板时发生错误: " + e.getMessage());
        }
    }

    /**
     * 导出模板
     */
    @GetMapping("/export/{id}")
    public Result<Checktemplate> exportTemplate(@PathVariable("id") Integer id) {
        Checktemplate template = checktemplateService.getById(id);
        if (template == null) {
            return Result.error(500, "未找到对应的模板");
        }
        return Result.success(template);
    }
}
